OCAMLC = ocamlc
OCAMLYACC = ocamlyacc
OCAMLLEX = ocamllex
GTAR=tar

RESULT = scheme
LIBS = str.cma
#OBJECTS = expressions.cmo haskparse.cmo hasklex.cmo infer.cmo hask.cmo
OBJECTS = expressions.cmo schemeparse.cmo schemelex.cmo scheme.cmo

all: scheme scheme.top

scheme: $(OBJECTS)
	$(OCAMLC) -o $(RESULT) $(LIBS) $(OBJECTS)

scheme.top: $(OBJECTS)
	ocamlmktop -o $(RESULT).top $(LIBS) $(OBJECTS)

expressions.cmo: expressions.ml
	$(OCAMLC) -c expressions.ml

#infer.cmo: infer.ml expressions.cmo
#	$(OCAMLC) -c infer.ml

schemeparse.cmo: schemeparse.mly expressions.cmo
	$(OCAMLYACC) -v schemeparse.mly
	$(OCAMLC) -c schemeparse.mli
	$(OCAMLC) -c schemeparse.ml

schemelex.cmo: schemelex.mll schemeparse.cmo
	$(OCAMLLEX) schemelex.mll
	$(OCAMLC) -c schemelex.ml

#scheme.cmo: scheme.ml schemeparse.cmo schemelex.cmo infer.cmo expressions.cmo
scheme.cmo: scheme.ml schemeparse.cmo schemelex.cmo expressions.cmo
	$(OCAMLC) -c scheme.ml

clean: 
	rm -f scheme scheme.top *cmo *cmi 
	rm schemeparse.mli schemeparse.ml schemelex.ml schemeparse.output
